Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JQuery] Wytłumaczcie mi dlaczego to działa w ten sposób.
korro
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 42
Dołączył: 8.04.2005
Skąd: Mława

Ostrzeżenie: (0%)
-----


Witam.
Robię dynamiczny formularz z użyciem JQuery.
Kod wygląda tak:
Szablon HTML:
  1. <textarea style="display:none" id="departments">
  2.    <tr id="departments_tr_{0}">
  3.        <td>{0}
  4.            <select name="departments_{0}">
  5.                <option value="">[choose department]</option>
  6.                <?php
  7.                $depts = $db->getDepartments();
  8.                foreach ($depts as $depts_row) {
  9.                    echo '<option value="'.$depts_row[0].'">'.$depts_row[1].'</option>'."\n";
  10.                }
  11.                ?>
  12.           </select>
  13.        </td>
  14.        <td>
  15.            <a href="#" ><img id="deleteDepartmentLine_{0}" border="0" src="images/minus.png"></a>
  16.        </td>
  17.   </tr>
  18. </textarea>


Niedziałający kod JS:
  1. <?php
  2. var templateDepartments = jQuery.format($("#departments").val());
  3.        var depts_id = 1;
  4.        function addDepartment() {
  5.            depts_id++;
  6.            $(templateDepartments(depts_id)).appendTo("#approvalLine tbody");
  7.            $("#deleteDepartmentLine_" + depts_id).click(function(){
  8.                $("#departments_tr_" +  depts_id).remove();
  9.            });
  10.          
  11.        }
  12.        $("#addDepartmentLine").click(addDepartment);
  13. ?>


Działający kod JS:
  1. <?php
  2. var templateDepartments = jQuery.format($("#departments").val());
  3.        var depts_id = 1;
  4.        function addDepartment() {
  5.            var r = depts_id++;
  6.            $(templateDepartments(r)).appendTo("#approvalLine tbody");
  7.            $("#deleteDepartmentLine_" + r).click(function(){
  8.                $("#departments_tr_" +  r).remove();
  9.            });
  10.          
  11.        }
  12.        $("#addDepartmentLine").click(addDepartment);
  13. ?>


Różnica polega na tym, że przepisuję zmienną i do zdarzeń używam przepisanej.
Pisząc 'nie działa' mam na myśli to, że wartość depts_id nie jest doklejana do nazwy elementu w momencie deklaracji, tylko w momencie zdarzenia.
Czyli: klikając na dowolny guzik minus usunie się tylko ostatnio wstawiony wiersz.

Z góry dzięki za pomysły.

Ten post edytował korro 17.03.2009, 18:27:15
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 21:10